MVVM প্যাটার্নে View কাস্টমাইজ করার জন্য Template এবং Style ব্যবহার করা হয়। এগুলি UI উপাদানগুলির (যেমন বোতাম, টেক্সটবক্স ইত্যাদি) লুক এবং ফাংশনালিটি কাস্টমাইজ করতে সাহায্য করে। Template এবং Style একটি অ্যাপ্লিকেশনের ব্যবহারকারীর অভিজ্ঞতাকে আরও আকর্ষণীয় এবং কার্যকরী করে তোলে।
Style UI উপাদানের দৃশ্যমানতা এবং লেআউট কাস্টমাইজ করার একটি উপায়। Style ব্যবহার করে আপনি একই ধরনের একাধিক UI উপাদানকে একটি সাধারণ স্টাইল প্রদান করতে পারেন, যা কোডের পুনঃব্যবহারযোগ্যতা বাড়ায় এবং অ্যাপ্লিকেশনটির এক্সটেনশন সহজ করে।
TargetType="Button"
ব্যবহার করবেন।<Window.Resources>
<!-- Button এর জন্য একটি স্টাইল -->
<Style TargetType="Button">
<Setter Property="Background" Value="Green"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="FontSize" Value="14"/>
<Setter Property="Padding" Value="10"/>
</Style>
</Window.Resources>
<Grid>
<Button Content="Click Me" Width="100" Height="50"/>
</Grid>
এই উদাহরণে, Button এর জন্য একটি স্টাইল তৈরি করা হয়েছে যা সব বাটনের ব্যাকগ্রাউন্ডকে সবুজ, টেক্সট রঙটিকে সাদা এবং ফন্ট সাইজকে ১৪ পিক্সেল করবে। যখনই আপনি Button ব্যবহার করবেন, এটি ঐ স্টাইলের মাধ্যমে কাস্টমাইজড হবে।
Template UI উপাদানগুলির স্ট্রাকচার এবং লেআউট কাস্টমাইজ করার একটি শক্তিশালী উপায়। ControlTemplate এবং DataTemplate হল দুটি প্রধান প্রকারের টেমপ্লেট, যা UI উপাদানের কন্টেন্ট এবং লেআউট নির্ধারণ করতে ব্যবহৃত হয়।
ControlTemplate এর মাধ্যমে আপনি UI উপাদানের সারা কাঠামো এবং স্টাইল কাস্টমাইজ করতে পারেন। এটি UI উপাদানের রূপরেখা (structure) পরিবর্তন করতে দেয়, যেমন বাটন, টেক্সটবক্স বা স্লাইডার কিভাবে দেখাবে তা নির্ধারণ করা।
ControlTemplate উদাহরণ:
<Window.Resources>
<!-- Button এর জন্য ControlTemplate -->
<ControlTemplate TargetType="Button">
<Border Background="DarkBlue" BorderBrush="Black" BorderThickness="2">
<TextBlock Text="{Binding Content}" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="White"/>
</Border>
</ControlTemplate>
</Window.Resources>
<Grid>
<Button Content="Click Me" Width="150" Height="50"/>
</Grid>
এই উদাহরণে, Button এর পুরো কাঠামো কাস্টমাইজ করা হয়েছে। এখানে Button এর মধ্যে থাকা টেক্সট এবং ব্যাকগ্রাউন্ডের ডিজাইন পুরোপুরি কাস্টমাইজড হয়েছে। ControlTemplate-এ টেক্সট এবং ব্যাকগ্রাউন্ড পরিবর্তন করতে আপনি একটি Border এবং TextBlock ব্যবহার করেছেন।
DataTemplate এর মাধ্যমে আপনি একটি ডেটা আইটেমের জন্য UI উপাদান কাস্টমাইজ করতে পারেন। এটি ডেটাবাইন্ড UI উপাদানগুলির জন্য ব্যবহার হয়, যেমন ListView বা ComboBox, যেখানে আপনি ডেটার নির্দিষ্ট প্রপার্টি UI উপাদানের মধ্যে প্রদর্শন করতে পারেন।
DataTemplate উদাহরণ:
<Window.Resources>
<!-- DataTemplate এর মাধ্যমে ListItem কাস্টমাইজ করা -->
<DataTemplate x:Key="ProductTemplate">
<StackPanel>
<TextBlock Text="{Binding Name}" FontWeight="Bold"/>
<TextBlock Text="{Binding Price}" Foreground="Green"/>
</StackPanel>
</DataTemplate>
</Window.Resources>
<ListView ItemsSource="{Binding Products}" ItemTemplate="{StaticResource ProductTemplate}"/>
এই উদাহরণে, DataTemplate ব্যবহার করে ListView এ প্রতিটি প্রোডাক্ট আইটেমের জন্য কাস্টম লেআউট তৈরি করা হয়েছে। Products হল একটি Collection যা Name এবং Price প্রপার্টি ধারণ করে, এবং DataTemplate এর মাধ্যমে সেই ডেটা UI-তে কাস্টমভাবে প্রদর্শিত হচ্ছে।
Template এবং Style হল MVVM প্যাটার্নের মধ্যে View কাস্টমাইজেশন প্রক্রিয়া। Style UI উপাদানগুলির অ্যাপিয়ারেন্স পরিবর্তন করে, যেখানে Template UI উপাদানের কাঠামো এবং লেআউট পরিবর্তন করে। এগুলি ডেভেলপারদের জন্য কোড পুনঃব্যবহারযোগ্য এবং মেইনটেনযোগ্য অ্যাপ্লিকেশন তৈরি করার ক্ষেত্রে সহায়ক।